package com.yingside.gui;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TestSendMessageFrame extends JFrame {

    //注意命名规范，会给我们编码带来很多好处
    /**
     * 一般按钮 开头btn
     * 一般输入相关控件 txt开头
     * 一般显示文字相关控件Label lbl开头
     */
    private JButton btnSend;
    private JTextField txtInput;
    private JTextArea txtMessage;
    private JPanel panel;

    //滚动条
    private JScrollPane scrollPane;

    public TestSendMessageFrame() {
        this.setTitle("聊天窗口");
        this.setBounds(300,300,400,400);

        btnSend = new JButton("发送");
        //给输入框一个默认长度，20一般表示20个字符的长度
        txtInput = new JTextField(20);
        txtMessage = new JTextArea();

        //整个界面使用borderLayout布局，划分为中间和南边
        //但是南边现在要显示两个组件，Borderlayout是不能直接显示两个的，需要借助容器组件
        //容器组件，没有任何效果，就是用来存放其他组件的
        //由于是一个专门放入组件的容器，所以也有布局管理器
        //JPanel默认的布局管理器是FlowLayout
        panel = new JPanel();
        //panel也是可以设置布局的
        //panel.setLayout(new GridLayout(1,2,10,0));
        panel.add(txtInput);
        panel.add(btnSend);

        //滚动条并不能单独使用，必须要加到某一个可以使用滚动条的组件上一起使用
        //在new滚动条对象的时候，直接使用滚动条的组件传入到构造器中
        scrollPane = new JScrollPane(txtMessage);

        //在界面添加的时候，直接添加滚动条组件
        this.add(scrollPane,BorderLayout.CENTER);
        //需要把容器放入到窗口中
        this.add(panel,BorderLayout.SOUTH);


        //===============发送事件=======================
        btnSend.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String text = txtInput.getText();
                if(text == null || "".equals(text)){
                    JOptionPane.showMessageDialog(null,"不能发送空内容");
                    return;
                }

                txtMessage.setText(txtMessage.getText() + text + "\r\n");
            }
        });


        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        TestSendMessageFrame tsmf = new TestSendMessageFrame();
        tsmf.setVisible(true);
    }
}
